package io;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * @description: 字节和字符读取中文
 * @author apple
 * @date 2021/9/12 12:33 上午
 * @version 1.0
 */
public class ChineseDemo {

    public static void main(String[] args) {
        // 字节读取，中文乱码了，因为中文占[2-4]个字符，如果是utf-8的话是3个
        // 不同的编码格式占字节数是不同的，UTF-8编码下一个中文所占字节也是不确定的，可能是2个、3个、4个字节
        byteIn();
        // 字符读取
        characterIn();

        chineseLength();
    }

    /**
     * @description: 验证中文在不同编码占多少个字节
     * @author apple
     * @date 2021/9/12 10:56 上午
     * @version 1.0
     */
    public static void chineseLength() {
        // 𠮷 这个字是日本的，长度是4

        String a = "温";

        System.out.println(a.getBytes().length);
        System.out.println(a.getBytes(StandardCharsets.UTF_8).length);
        try {
            System.out.println(a.getBytes("GBK").length);
            System.out.println(a.getBytes("GB2312").length);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    public static void byteIn() {

        InputStream in = null;
        try {
            in = new FileInputStream("tx.txt");
            int len = 0;
            System.out.println((char)in.read());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }


    public static void characterIn() {

        Reader in = null;
        try {
            in = new FileReader("tx.txt");
            int len = 0;
            System.out.println((char)in.read());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }


    }
}
